	//Start of EMOF Types
	
	var jsElement = Class.create({
		initialize: function(id){
			this.ownedComment = new Array();
			this.id = id;
		}
	});
	
	var jsNamedElement = Class.create(jsElement, {
		initialize: function($super, id){
			$super(id);
			this.name = "";
		}
	});
	
	var jsComment = Class.create(jsElement, {
		initialize: function($super, id){
			$super(id);
			this.body = body;
			this.annotatedElement = new Array();
			this.id = id;
		}
	});	
	
	var jsType = Class.create(jsNamedElement, {
		initialize: function($super, id){
			$super(id);
			this._package = null;
			this.id = id;
		},
		isInstance: function(object){
			return true;
		}
	});
	
	var jsTypedElement = Class.create(jsNamedElement, {
		initialize: function($super, id){
			$super(id);
			this.type = null;
			this.id = id;
		}
	});
	
	//End of EMOF Types
	
	//Start of EMOF Packages
	
	var jsPackage = Class.create(jsNamedElement, {
		initialize: function($super, id){
			$super(id);
			this.uri = "";
			this.ownedType = new Array();
			this.nestingPackage = new Array();
			this.nestedPackage = null;
			this.id = id;
		}
	});
	
	//End of EMOF Packages
	
	//Start of EMOF Data Types		

	var jsDataType = Class.create(jsType, {
		initialize: function($super, id){
			$super(id);
			this.id = id;
		}
	});

	var jsPrimitiveType = Class.create(jsDataType, {
		initialize: function($super, id){
			$super(id);
			this.id = id;
		}
	});

	var jsEnumeration = Class.create(jsDataType, {
		initialize: function($super, id){
			$super(id);
			this.ownedLiteral = new Array();
			this.id = id;
		}
	});
		
	var jsEnumerationLiteral = Class.create(jsNamedElement, {
		initialize: function($super, id){
			$super(id);
			this.enumeration = null;
			this.id = id;
		}
	});

	//End of EMOF Data Types
	
	//Start of EMOF Classes

	var jsClass = Class.create(jsType, {
		initialize: function($super, id){
			$super(id);
			this.isAbstract = false;
			this.ownedAttribute = new Array();
			this.superClass = new Array();
			this.ownedOperation = new Array();
			this.id = id;
		}
	});
	
	var jsMultiplicityElement = Class.create(jsTypedElement, {
		initialize: function($super, id){
			$super(id);
			this.isOrdered = false;
			this.isUnique = true;
			this.lower = 1;
			this.upper = 1;
			this.id = id;
		}
	});

	var jsProperty = Class.create(jsMultiplicityElement, {
		initialize: function($super, id){
			$super(id);
			this.isReadyOnly = false;
			this._default = "";
			this.isComposite = false;
			this.isDerived = false;
			this.isID;
			this.opposite = null;
			this._class = null;
			this.id = id;
		}
	});
	
	var jsOperation = Class.create(jsMultiplicityElement, {
		initialize: function($super, id){
			$super(id);
			this.ownedParameter = new Array();
			this._class = null;
			this.raisedException = new Array();
			this.id = id;
		}
	});
	
	var jsParameter = Class.create(jsMultiplicityElement, {
		initialize: function($super, id){
			$super(id);
			this.operation = null;
			this._class = null;
			this.id = id;
		}
	});
	
	//End of EMOF Classes
	
	//Start of UML Primitive Types
	
	var jsInteger = Class.create(jsPrimitiveType, {
		initialize: function($super, id){	
			$super(id);
			this.id = id;
		}
	});

	var jsBoolean = Class.create(jsPrimitiveType, {
		initialize: function($super, id){
			$super(id);
			this.id = id;
		}
	});

	var jsString = Class.create(jsPrimitiveType, {
		initialize: function($super, id){
			$super(id);
			this.id = id;
		}
	});

	var jsUnlimitedNatural = Class.create(jsPrimitiveType, {
		initialize: function($super, id){
			$super(id);
			this.id = id;
		}
	});
	
	//End of UML Primitive Types
